package com.zzgc.modules.param;

import lombok.Data;

import java.util.List;

/**
 * 年级视力统计类
 * @ClassName GradeParam
 * @Date 2022/12/14  10:00
 * @Version 1.0
 */
@Data
public class GradeParam {
    // 数据对象以年级为单位
    private String gradeName; // 年级名字
    private int count; // 年级人数
    private int inspect; // 年级检查人数
    private float coverage; // 检查覆盖率
    private float unhealthy;// 视力不良率
    private float myopiaRate; //近视率
    private int manCount; // 男生人数
    private int womanCount; // 女生人数
    private int normalVision; // 正常视力
    private int abnormalVision; // 异常视力
    private int myopia; // 近视人数
    private float oneWarning; // 一级预警
    private float twoWarning; // 二级预警
    private int twoCount; // 二级人数
    private float threeWarning; // 三级预警
    private int threeCount; // 三级人数
    private List<ClassParam> classParams;

    public float keepDecimals(Integer digit, float number) {
        return Float.parseFloat(String.format("%." + digit + "f", number * 100));
    }

    public float getUnhealthy() {
        // 年级视力不良率 = 异常视力人数 / 检查人数
        if (this.inspect == 0){
            return unhealthy = 0.0f;
        }
        return unhealthy = keepDecimals(1, this.abnormalVision / (float) this.inspect);
    }

    public float getCoverage() {
        // 检查覆盖人数 = 检查人数 / 学校人数
        if (this.count == 0){
            return coverage = 0.0f;
        }
        return coverage = keepDecimals(1, this.inspect / (float) this.count);
    }

    public float getMyopiaRate() {
        // 近视率 = 近视人数 / 检查人数
        if (this.inspect == 0){
            return myopiaRate = 0.0f;
        }
        return myopiaRate = keepDecimals(1, this.myopia / (float) this.inspect);
    }
    public float getOneWarning() {
        // 一级预警 = 正常人数 / 检查人数
        if (this.inspect == 0){
            return oneWarning = 0.0f;
        }
        return oneWarning = keepDecimals(2, this.normalVision / (float) this.inspect);
    }

    public float getTwoWarning() {
        // 二级预警 = 二级人数 / 检查人数
        if (this.inspect == 0){
            return twoWarning = 0.0f;
        }
        return twoWarning = keepDecimals(2, this.twoCount / (float) this.inspect);
    }

    public float getThreeWarning() {
        // 三级预警 = 三级人数 / 检查人数
        if (this.inspect == 0){
            return threeWarning = 0.0f;
        }
        return threeWarning = keepDecimals(2, this.threeCount / (float) this.inspect);
    }

}
